import {
  useCounterStore
} from '@/stores/counter'
import {
  mapGetters
} from 'pinia'
// 导出一个 mixin 对象
export default {
  computed: {
    ...mapGetters(useCounterStore, ['total']),
  },
  onShow() {
    // 在页面刚展示的时候，设置数字徽标
    this.setBadge()
  },
  watch: {
    // 监听 total 值的变化
    total() {
      // 只有 TabBar 页面才更新徽章
      if (this.isTabBarPage()) {
        // 调用 methods 中的 setBadge 方法，重新为 tabBar 的数字徽章赋值
        this.setBadge()
      }
    },
  },
  methods: {
    // 判断当前页面是否为 TabBar 页面
    isTabBarPage() {
      // 获取当前页面路径（uni-app 中可通过 getCurrentPages() 获取）
      const currentPages = getCurrentPages()
      const currentPagePath = currentPages[currentPages.length - 1].route
      // TabBar 页面路径列表（与 pages.json 中 tabBar.list 对应）
      const tabBarPages = ['pages/home/home', 'pages/cart/cart', 'pages/my/my', 'pages/cate/cate']
      // 判断当前页面是否在 TabBar 列表中
      return tabBarPages.includes(currentPagePath)
    },
    setBadge() {
      // 调用 uni.setTabBarBadge() 方法，为购物车设置右上角的徽标
      if (this.total > 0) {
        uni.setTabBarBadge({
          index: 2,
          text: this.total + '', // 注意：text 的值必须是字符串，不能是数字
        })
      } else {
        // 数量为0或负数时，移除徽章
        uni.removeTabBarBadge({
          index: 2
        })
      }
    },
  },
}